home *** CD-ROM | disk | FTP | other *** search
- package com.extensibility.print;
-
- import com.extensibility.app.BaseApplication;
- import com.extensibility.app.DialogFactory;
- import java.awt.BorderLayout;
- import java.awt.Component;
- import java.awt.Container;
- import java.awt.Dimension;
- import java.awt.Frame;
- import java.awt.Graphics;
- import java.awt.Insets;
- import java.awt.PrintJob;
- import java.awt.Window;
- import java.util.Properties;
- import javax.swing.Box;
- import javax.swing.JComponent;
- import javax.swing.JEditorPane;
- import javax.swing.JFrame;
- import javax.swing.event.EventListenerList;
-
- public class Printer {
- Insets insets = getDefaultInsets();
- Component header = Box.createHorizontalBox();
- Component footer = Box.createHorizontalBox();
- EventListenerList listenerList = new EventListenerList();
-
- public static Insets getDefaultInsets() {
- return new Insets(60, 60, 60, 60);
- }
-
- public static Insets getInsets() {
- String[] var0 = BaseApplication.getPreferences().getMargins();
- int var1 = Integer.valueOf(var0[2]);
- int var2 = Integer.valueOf(var0[3]);
- int var3 = Integer.valueOf(var0[0]);
- int var4 = Integer.valueOf(var0[1]);
- return new Insets(var3, var2, var4, var1);
- }
-
- public void setFooter(String var1, String var2, String var3) {
- this.footer = this.createHF(var1, var2, var3, 1.0F, 10);
- }
-
- public void setHeader(String var1, String var2, String var3) {
- this.header = this.createHF(var1, var2, var3, 0.0F, 12);
- }
-
- public void setFooter(Component var1) {
- this.footer = var1;
- }
-
- public void setHeader(Component var1) {
- this.header = var1;
- }
-
- private Component createHF(String var1, String var2, String var3, float var4, int var5) {
- Box var6 = Box.createHorizontalBox();
- 1.PageLabel var7 = new 1.PageLabel(this, var5);
- this.addPageChangeListener(var7);
- 1.PageLabel var8 = new 1.PageLabel(this, var5);
- ((JComponent)var8).setAlignmentX(0.0F);
- this.addPageChangeListener(var8);
- 1.PageLabel var9 = new 1.PageLabel(this, var5);
- ((JComponent)var9).setAlignmentX(4.0F);
- this.addPageChangeListener(var9);
- if (var1 != null) {
- var7.setText(var1);
- }
-
- if (var2 != null) {
- var8.setText(var2);
- }
-
- if (var3 != null) {
- var9.setText(var3);
- }
-
- ((Container)var6).add(var7);
- ((Container)var6).add(Box.createHorizontalGlue());
- ((Container)var6).add(var8);
- ((Container)var6).add(Box.createHorizontalGlue());
- ((Container)var6).add(var9);
- Box var10 = Box.createVerticalBox();
- if (var4 == 0.0F) {
- ((Container)var10).add(var6);
- ((Container)var10).add(Box.createVerticalStrut(16));
- } else {
- ((Container)var10).add(Box.createVerticalStrut(16));
- ((Container)var10).add(var6);
- }
-
- return var10;
- }
-
- protected int printEachComponent(Component var1, JFrame var2, PrintJob var3, boolean var4) {
- Dimension var5 = var3.getPageDimension();
- Insets var6 = getInsets();
- int var7 = 0;
- int var8 = var5.width;
- int var9 = var5.height;
- int var10 = var8 - var6.left - var6.right;
- int var11 = var9 - var6.top - var6.bottom;
- int var12 = var1.getPreferredSize().height;
- int var13 = var1.getPreferredSize().width;
- int var14 = this.header.getPreferredSize().height;
- int var15 = this.footer.getPreferredSize().height;
- int var16 = var11 - var14 - var15;
- int var17 = var4 ? var13 / var10 + 1 : 1;
- int var18 = var12 / var16 + 1;
- var7 = var17 * var18;
- ((Component)var2).setLocation(0, ((Window)var2).getToolkit().getScreenSize().height + 1);
- ((Window)var2).pack();
- Dimension var19 = var2.getContentPane().getSize();
- Dimension var20 = ((Component)var2).getSize();
- ((Component)var2).setSize(var10 + (var20.width - var19.width), var11 + (var20.height - var19.height));
- ((Component)var2).setVisible(true);
-
- for(int var22 = 0; var22 < var18; ++var22) {
- for(int var23 = 0; var23 < var17; ++var23) {
- int var21 = var22 * var17 + var23;
- Graphics var24 = var3.getGraphics();
- var24.translate(var6.right, 0);
- this.firePageChangeEvent(var21 + 1);
- var24.setClip(0, var6.top, var10, var14);
- var24.translate(0, var6.top);
- this.header.printAll(var24);
- var24.translate(0, -var6.top);
- var24.setClip(0, var6.top + var14, var10, var16);
- var24.translate(-(var10 * var23), (var16 * var22 - (var6.top + var14)) * -1);
- if (var1 instanceof JEditorPane) {
- var1.paintAll(var24);
- } else {
- var1.printAll(var24);
- }
-
- var24.translate(var10 * var23, -(var16 * var22 - (var6.top + var14)) * -1);
- var24.setClip(0, var6.top + var14 + var16, var10, var15);
- var24.translate(0, var6.top + var14 + var16);
- this.footer.printAll(var24);
- var24.dispose();
- }
- }
-
- return var7;
- }
-
- public void print(String var1, Component var2, boolean var3) {
- if (var2.getParent() != null) {
- throw new IllegalArgumentException("Print components should have no parents");
- } else {
- JFrame var4 = new JFrame();
- ((Frame)var4).setTitle(var1);
- var4.getContentPane().setLayout(new BorderLayout());
- var4.getContentPane().add(this.header, "North");
- var4.getContentPane().add(var2, "Center");
- var4.getContentPane().add(this.footer, "South");
-
- try {
- PrintJob var5 = ((Window)var4).getToolkit().getPrintJob(var4, var1, (Properties)null);
- if (var5 != null) {
- this.printEachComponent(var2, var4, var5, var3);
- var5.end();
- }
- } catch (Exception var6) {
- DialogFactory.showException((Component)null, 124, var6);
- }
-
- ((Component)var4).setVisible(false);
- ((Frame)var4).dispose();
- }
- }
-
- public void addPageChangeListener(PageChangeListener var1) {
- this.listenerList.add(Class.forName("com.extensibility.print.PageChangeListener"), var1);
- }
-
- public void removePageChangeListener(PageChangeListener var1) {
- this.listenerList.remove(Class.forName("com.extensibility.print.PageChangeListener"), var1);
- }
-
- protected void firePageChangeEvent(int var1) {
- Object[] var2 = this.listenerList.getListenerList();
-
- for(int var3 = var2.length - 2; var3 >= 0; var3 -= 2) {
- if (var2[var3] == Class.forName("com.extensibility.print.PageChangeListener")) {
- PageChangeListener var4 = (PageChangeListener)var2[var3 + 1];
- var4.pageChanged(var1);
- }
- }
-
- }
- }
-